function deepClone(obj) {
  return new Promise((resolve, reject) => {
    try {
      let { port1, port2 } = new MessageChannel();
      port1.onmessage = (e) => {
        resolve(e.data);
      };
      port2.postMessage(obj);
    } catch (error) {
      reject(error);
    }
  });
}
let a={a:[1,23,3],b:{a:1,b:2}};
let b=deepClone(a);
console.log(a,'a\n');
console.log(b,'b\n');
console.log(a===b,'a===b');
